package utils

import (
	"fmt"
)

type familyAccount struct {
	detail  string
	balance float32
	money   float32
	note    string
}

// 结构体，工厂函数（方法名首字母大写）
func NewFamilyAccount() *familyAccount {
	return &familyAccount{
		// detail 表头、 balance 余额、money 手指金额、note 说明
		detail:  "收支    账户金额    收支金额    说    明",
		balance: 10000.0,
		money:   0.0,
		note:    "",
	}
}

func (this *familyAccount) io_details() {
	fmt.Println("------------家庭收支记账软件------------")
	fmt.Println(this.detail)
}

func (this *familyAccount) record_income() {
	fmt.Print("本次收入金额：")
	fmt.Scanln(&this.money)
	fmt.Print("本次收入说明：")
	fmt.Scanln(&this.note)
	this.balance += this.money
	this.detail += fmt.Sprintf("\n收入\t%v\t\t%v\t%v\t", this.balance, this.money, this.note)
}

func (this *familyAccount) record_expend() {
	fmt.Print("本次支出金额：")
	fmt.Scanln(&this.money)
	fmt.Print("本次支出说明：")
	fmt.Scanln(&this.note)
	this.balance -= this.money
	this.detail += fmt.Sprintf("\n支出\t%v\t\t%v\t%v\t", this.balance, this.money, this.note)
}

func (this *familyAccount) MainMenu() {
	var key int
lable1:
	for {
		fmt.Println("\n\n------------家庭收支记账软件------------")
		fmt.Println("              1 收支明细")
		fmt.Println("              2 登记收入")
		fmt.Println("              3 登记支出")
		fmt.Println("              4 退   出")
		fmt.Print("              请选择（1-4）： ")
		fmt.Scanln(&key)

		switch key {
		case 1:
			this.io_details()
		case 2:
			this.record_income()
		case 3:
			this.record_expend()
		case 4:
			fmt.Print("已退出软件")
			break lable1
		default:
			fmt.Println("输入格式错误")
		}
	}
}
